package day04_Array;
/*
一维数组：里面的每一个元素都是基本数据类型 或者 String引用类型
动态初始化（需要指定长度）：
格式： 数据类型[] 数组名称 = new 数据类型[长度];
数据类型 -> 引用类型 -> 数组类型: 数据类型 [长度]

定义：
数组里面可以包含引用类型，数组本身就是一个引用类型，
二维数组就是 数组里面包含数组

初始化：
动态初始化（需要指定长度）：
格式： 数据类型 [][] 二维数组名称 = new 数据类型[长度1][长度2];
长度1：先初始化一个长度为 长度1 的数组A，该数组A里面可以存 长度1 个数组B
长度2：数组B的长度
注意：长度2可以省略,长度1无法省略

静态初始化（需要指定内容）：
数据类型 [][] 二维数组名称 = new 数据类型[][]{数组1,数组2,数组3.....};
简写方式： 数据类型 [][] 二维数组名称 = {数组1,数组2,数组3.....}
数组1、2、3 的长度可以任意，但必须是一个数组，不能是基本数据类型

访问二维数组的元素a：
第一步：先访问元素a所在的数组C
第二步：再访问数组C中的元素a
格式：
二维数组名称[数组索引][数组里的元素索引]

思考：
如何遍历二维数组的所有元素？
 */
public class Demo15_二维数组 {
    public static void main(String[] args) {
        // 动态初始化二维数组 指定两个长度
        int[][] arrayAA = new int[2][3];

        System.out.println(arrayAA); // 内存地址1
        System.out.println(arrayAA[0]); // 内存地址2
        System.out.println(arrayAA[1]); // 内存地址3
        System.out.println("============");
        System.out.println(arrayAA[0][0]);
        System.out.println(arrayAA[0][1]);
        System.out.println(arrayAA[0][2]);

        System.out.println("============");
        System.out.println(arrayAA[1][0]);
        System.out.println(arrayAA[1][1]);
        System.out.println(arrayAA[1][2]);
        System.out.println("============");
        // 数组索引越界
        //        System.out.println(arrayAA[2]);

        // 动态初始化二维数组 指定一个长度
        int[][] arrayAB = new int[2][];
        arrayAB[0] = new int[3];
        arrayAB[1] = new int[3]; // 3步合并 => int[][] arrayAA = new int[2][3];

        // 静态初始化二维数组，直接指定内容
        int[][] arrayBB = new int[][]{{1, 2, 3}, {2, 3, 4}, {5, 6}, {7}};
        // 静态初始化二维数组的简写方式
        int[][] arrayBC = {{1}, {1, 2, 3}, {2, 3, 4}, {5, 6}, {7}};
    }
}
